/**
 * @description works service
 */

const _ = require('lodash')
const { WorkContentModel, WorkPublishContentModel } = require('../model/workContent')
const WorksModel = require('../model/work')

/**
 * 查询单个作品
 * @param {object} whereOpt 查询条件
 * @param {boolean} publish 是否是发布的项目
 */
async function findOneWork(whereOpt = {}, publish = true) {
  console.log(100)
  if (_.isEmpty(whereOpt)) return null // 无查询条件
  console.log(200)

  // 查询作品记录 - mysql
  const result = await WorksModel.findOne(whereOpt).lean()

  if (!result) {
    // 未查到
    console.log(300)
    return null
  }

  const { publishContentId, contentId } = result
  let content
  if (publish) {
    // 发布的项目
    if (!publishContentId) {
      console.log(400)
      return null
    }
    content = await WorkPublishContentModel.findById(publishContentId)
  } else {
    // 未发布的项目，预览
    if (!contentId) {
      console.log(500)
      return null
    }
    content = await WorkContentModel.findById(contentId)
  }

  // 返回查询结果
  return {
    ...result,
    content // 拼接上作品内容
  }
}

module.exports = {
  findOneWork
}
